package com.base.user.entity;

import java.time.LocalDateTime;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;

import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 实体类继承Model类  AR模式（Active Record）
 * 直接通过实体类完成对数据的增删改查。
 */

@Data
@TableName("user")
@EqualsAndHashCode(callSuper = false)
public class User extends Model<User> {
//public class User  {
	//@TableId(value = "id",type = IdType.AUTO)
	@TableId(value = "id")
    private Long id;
	@TableField("name")
	//@TableField(value = "name",condition = SqlCondition.LIKE)
    private String name;
    private Integer age;
    private String email;
    private Long managerId;
    @TableField(exist = false)
    private LocalDateTime createTime;
    //更新数据的时候会更新该字段 如果要用该功能需要实现MetaObjectHandler接口中的insertFill和updateFill方法
    @TableField(fill = FieldFill.UPDATE) 
    private LocalDateTime updateTime;
    private Integer version;
    //'逻辑删除标识（0，未删除；1，已删除）'
    @TableLogic
    private Integer deleted;
    //MyBatisPlus提供了一些注解供我们在实体类和表信息出现不对应的时候使用。通过使用注解完成逻辑上匹配。
    //@TableName	实体类的类名和数据库表名不一致
    //@TableId	实体类的主键名称和表中主键名称不一致
    //@TableField	实体类中的成员名称和表中字段名称不一致
    
    
    //排除实体类中非表字段
    //使用transient关键字修饰非表字段，但是被transient修饰后，无法进行序列化。
    //使用static关键字，因为我们使用的是lombok框架生成的get/set方法，所以对于静态变量，我们需要手动生成get/set方法。
    //使用@TableField(exist = false)注解

}